package producto;

import java.util.Observable;

public class Producto extends Observable implements IProducto {

	protected Presentacion presentacion;
	protected String nombre,descripcion,marca,tipoDeProducto;
	
	public Producto(Presentacion presentacion, 
			String nombre,
			String descripcion, 
			String marca, 
			String tipo){
		
		this.setPresentacion(presentacion);
		this.nombre= nombre;
		this.descripcion = descripcion;
		this.marca = marca;
		this.tipoDeProducto = tipo;
	}

	public Presentacion getPresentacion() {
		return presentacion;
	}

	public void setPresentacion(Presentacion presentacion) {
		this.presentacion = presentacion;
	}

	@Override
	public double precioUnitarioDeVenta() {
		// TODO Auto-generated method stub
		return this.presentacion.getPrecioDeVenta();
	}
	
	public int getCantidadEnStock() {
		return this.presentacion.getCantidadEnStock();
	}
	public int getStockCritico() {
		return this.presentacion.getStockCritico();
	}
	public int getStockMinimo() {
		return this.presentacion.getStockMinimo();
	}

	

	public Producto duplicar() {
		// TODO Auto-generated method stub
		Presentacion copiaPresentacion = this.getPresentacion().duplicar();
		Producto copiaProducto = new Producto(copiaPresentacion,
				this.getNombre(),this.getDescripcion(),
				this.getMarca(),this.getTipoDeProducto());
		return copiaProducto;
	}
	
	private String getMarca() {
		// TODO Auto-generated method stub
		return this.marca;
	}

	private String getTipoDeProducto() {
		// TODO Auto-generated method stub
		return this.tipoDeProducto;
	}

	private String getNombre() {
		// TODO Auto-generated method stub
		return this.nombre;
	}

	private String getDescripcion() {
		// TODO Auto-generated method stub
		return this.descripcion;
	}
	public String getCodigoDeBarras(){
		return this.getPresentacion().getCodigoDeBarras();
	}

	public void incrementarStock(int i){
		this.hasChanged();
		this.notifyObservers(null);
		this.presentacion.aumentarStock(i);
	}

	public void incrementarStock() {
		// TODO Auto-generated method stub
		// este metodo se utiliza unicamente en ventas!s
		this.hasChanged();
		this.notifyObservers(null);
		this.presentacion.aumentarStock(1);
		
	}
	public void decrementarStock() {
		// TODO Auto-generated method stub
		this.presentacion.decrementarStock();
		
	}
	
	
}
